<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/cpumask.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/cpumask.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9DUFVNQVNLX0hfMA__"><span class="b">__LINUX_CPUMASK_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9DUFVNQVNLX0hfMA__"><span class="b">__LINUX_CPUMASK_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="k">/*</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="k"> * Cpumasks provide a bitmap suitable for representing the</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="k"> * set of CPU&apos;s in a system, one bit position per CPU number.  In general,</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="k"> * only nr_cpu_ids (&lt;= NR_CPUS) bits are valid.</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="k"> */</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">kernel</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">threads</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bitmap</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bug</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="13" /><span class="Maybe">      13:</span> 
<a name="14" /><span class="Maybe">      14:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_REVDTEFSRV9CSVRNQVBfMA__"><span class="b">DECLARE_BITMAP</span></a><span class="f">(</span><span class="b">bits</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="b">cpumask_t</span><span class="f">;</span>
<a name="15" /><span class="Maybe">      15:</span> 
<a name="16" /><span class="Maybe">      16:</span> <span class="k">/**</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * cpumask_bits - get the bits in a cpumask</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> * @maskp: the struct cpumask *</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="k"> *</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> * You should only assume nr_cpu_ids bits of this mask are valid.  This is</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> * a macro so it&apos;s const-correct.</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">maskp</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">maskp</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">)</span>
<a name="24" /><span class="Maybe">      24:</span> 
<a name="25" /><span class="False">      25:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a> <span class="f">==</span> <span class="c">1</span>
<a name="26" /><span class="False">      26:</span> <span class="f">#</span><span class="n">define</span> <span class="b">nr_cpu_ids</span>        <span class="c">1</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="f">#</span><span class="n">else</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">nr_cpu_ids</span><span class="f">;</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="f">#</span><span class="n">endif</span>
<a name="30" /><span class="Maybe">      30:</span> 
<a name="31" /><span class="False">      31:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_CPUMASK_OFFSTACK</span>
<a name="32" /><span class="False">      32:</span> <span class="k">/* Assuming NR_CPUS is huge, a runtime limit is more efficient.  Also,</span>
<a name="33" /><span class="False">      33:</span> <span class="k"> * not all bits may be allocated. */</span>
<a name="34" /><span class="False">      34:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a>    <span class="b">nr_cpu_ids</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="f">#</span><span class="n">else</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a>    <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a>
<a name="37" /><span class="Maybe">      37:</span> <span class="f">#</span><span class="n">endif</span>
<a name="38" /><span class="Maybe">      38:</span> 
<a name="39" /><span class="Maybe">      39:</span> <span class="k">/*</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="k"> * The following particular system cpumasks and operations manage</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> * possible, present, active and online cpus.</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> *</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> *     cpu_possible_mask- has bit &apos;cpu&apos; set iff cpu is populatable</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> *     cpu_present_mask - has bit &apos;cpu&apos; set iff cpu is populated</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> *     cpu_online_mask  - has bit &apos;cpu&apos; set iff cpu available to scheduler</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> *     cpu_active_mask  - has bit &apos;cpu&apos; set iff cpu available to migration</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> *</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> *  If !CONFIG_HOTPLUG_CPU, present == possible, and active == online.</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="k"> *</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="k"> *  The cpu_possible_mask is fixed at boot time, as the set of CPU id&apos;s</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="k"> *  that it is possible might ever be plugged in at anytime during the</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="k"> *  life of that system boot.  The cpu_present_mask is dynamic(*),</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="k"> *  representing which CPUs are currently plugged in.  And</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="k"> *  cpu_online_mask is the dynamic subset of cpu_present_mask,</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="k"> *  indicating those CPUs available for scheduling.</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="k"> *</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="k"> *  If HOTPLUG is enabled, then cpu_possible_mask is forced to have</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> *  all NR_CPUS bits set, otherwise it is just the set of CPUs that</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> *  ACPI reports present at boot.</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> *</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> *  If HOTPLUG is enabled, then cpu_present_mask varies dynamically,</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> *  depending on what ACPI reports as currently plugged in, otherwise</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> *  cpu_present_mask is just a copy of cpu_possible_mask.</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="k"> *</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="k"> *  (*) Well, cpu_present_mask is dynamic in the hotplug case.  If not</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="k"> *      hotplug, it&apos;s a copy of cpu_possible_mask, hence fixed at boot.</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> *</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> * Subtleties:</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="k"> * 1) UP arch&apos;s (NR_CPUS == 1, CONFIG_SMP not defined) hardcode</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="k"> *    assumption that their single CPU is online.  The UP</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="k"> *    cpu_{online,possible,present}_masks are placebos.  Changing them</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="k"> *    will have no useful affect on the following num_*_cpus()</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="k"> *    and cpu_*() macros in the UP case.  This ugliness is a UP</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="k"> *    optimization - don&apos;t waste any instructions or memory references</span>
<a name="75" /><span class="Maybe">      75:</span> <span class="k"> *    asking if you&apos;re online or how many CPUs there are if there is</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="k"> *    only one CPU.</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="k"> */</span>
<a name="78" /><span class="Maybe">      78:</span> 
<a name="79" /><span class="Maybe">      79:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="m">const</span> <span class="b">cpu_possible_mask</span><span class="f">;</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="m">const</span> <span class="b">cpu_online_mask</span><span class="f">;</span>
<a name="81" /><span class="Maybe">      81:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="m">const</span> <span class="b">cpu_present_mask</span><span class="f">;</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="m">const</span> <span class="b">cpu_active_mask</span><span class="f">;</span>
<a name="83" /><span class="Maybe">      83:</span> 
<a name="84" /><span class="Maybe">      84:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a> <span class="f">&gt;</span> <span class="c">1</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bnVtX29ubGluZV9jcHVzXzA_"><span class="b">num_online_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="b">cpumask_weight</span><span class="f">(</span><span class="b">cpu_online_mask</span><span class="f">)</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX3Bvc3NpYmxlX2NwdXNfMA__"><span class="b">num_possible_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="b">cpumask_weight</span><span class="f">(</span><span class="b">cpu_possible_mask</span><span class="f">)</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX3ByZXNlbnRfY3B1c18w"><span class="b">num_present_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="b">cpumask_weight</span><span class="f">(</span><span class="b">cpu_present_mask</span><span class="f">)</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX2FjdGl2ZV9jcHVzXzA_"><span class="b">num_active_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="b">cpumask_weight</span><span class="f">(</span><span class="b">cpu_active_mask</span><span class="f">)</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1X29ubGluZV8w"><span class="b">cpu_online</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_Y3B1bWFza190ZXN0X2NwdV8w"><span class="b">cpumask_test_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="b">cpu_online_mask</span><span class="f">)</span>
<a name="90" /><span class="Maybe">      90:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1X3Bvc3NpYmxlXzA_"><span class="b">cpu_possible</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_Y3B1bWFza190ZXN0X2NwdV8w"><span class="b">cpumask_test_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="b">cpu_possible_mask</span><span class="f">)</span>
<a name="91" /><span class="Maybe">      91:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1X3ByZXNlbnRfMA__"><span class="b">cpu_present</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_Y3B1bWFza190ZXN0X2NwdV8w"><span class="b">cpumask_test_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="b">cpu_present_mask</span><span class="f">)</span>
<a name="92" /><span class="Maybe">      92:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X2FjdGl2ZV8w"><span class="b">cpu_active</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_Y3B1bWFza190ZXN0X2NwdV8w"><span class="b">cpumask_test_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="b">cpu_active_mask</span><span class="f">)</span>
<a name="93" /><span class="False">      93:</span> <span class="f">#</span><span class="n">else</span>
<a name="94" /><span class="False">      94:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bnVtX29ubGluZV9jcHVzXzA_"><span class="b">num_online_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="c">1U</span>
<a name="95" /><span class="False">      95:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX3Bvc3NpYmxlX2NwdXNfMA__"><span class="b">num_possible_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="c">1U</span>
<a name="96" /><span class="False">      96:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX3ByZXNlbnRfY3B1c18w"><span class="b">num_present_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="c">1U</span>
<a name="97" /><span class="False">      97:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX2FjdGl2ZV9jcHVzXzA_"><span class="b">num_active_cpus</span></a><span class="f">(</span><span class="f">)</span>    <span class="c">1U</span>
<a name="98" /><span class="False">      98:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1X29ubGluZV8w"><span class="b">cpu_online</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>        <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">==</span> <span class="c">0</span><span class="f">)</span>
<a name="99" /><span class="False">      99:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1X3Bvc3NpYmxlXzA_"><span class="b">cpu_possible</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">==</span> <span class="c">0</span><span class="f">)</span>
<a name="100" /><span class="False">     100:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1X3ByZXNlbnRfMA__"><span class="b">cpu_present</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>    <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">==</span> <span class="c">0</span><span class="f">)</span>
<a name="101" /><span class="False">     101:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X2FjdGl2ZV8w"><span class="b">cpu_active</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>        <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">==</span> <span class="c">0</span><span class="f">)</span>
<a name="102" /><span class="Maybe">     102:</span> <span class="f">#</span><span class="n">endif</span>
<a name="103" /><span class="Maybe">     103:</span> 
<a name="104" /><span class="Maybe">     104:</span> <span class="k">/* verify cpu argument to cpumask_* operators */</span>
<a name="105" /><span class="Maybe">     105:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_check</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="f">{</span>
<a name="107" /><span class="False">     107:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_PER_CPU_MAPS</span>
<a name="108" /><span class="False">     108:</span>     <a href="cpu.c_macros_ref.html#_V0FSTl9PTl9PTkNFXzA_"><span class="b">WARN_ON_ONCE</span></a><span class="f">(</span><span class="b">cpu</span> <span class="f">&gt;=</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_DEBUG_PER_CPU_MAPS */</span>
<a name="110" /><span class="Maybe">     110:</span>     <span class="m">return</span> <span class="b">cpu</span><span class="f">;</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="f">}</span>
<a name="112" /><span class="Maybe">     112:</span> 
<a name="113" /><span class="False">     113:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a> <span class="f">==</span> <span class="c">1</span>
<a name="114" /><span class="False">     114:</span> <span class="k">/* Uniprocessor.  Assume all masks are &quot;1&quot;. */</span>
<a name="115" /><span class="False">     115:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_first</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="116" /><span class="False">     116:</span> <span class="f">{</span>
<a name="117" /><span class="False">     117:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="118" /><span class="False">     118:</span> <span class="f">}</span>
<a name="119" /><span class="False">     119:</span> 
<a name="120" /><span class="False">     120:</span> <span class="k">/* Valid inputs for n are -1 and 0. */</span>
<a name="121" /><span class="False">     121:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_next</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="122" /><span class="False">     122:</span> <span class="f">{</span>
<a name="123" /><span class="False">     123:</span>     <span class="m">return</span> <span class="b">n</span><span class="f">+</span><span class="c">1</span><span class="f">;</span>
<a name="124" /><span class="False">     124:</span> <span class="f">}</span>
<a name="125" /><span class="False">     125:</span> 
<a name="126" /><span class="False">     126:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_next_zero</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="127" /><span class="False">     127:</span> <span class="f">{</span>
<a name="128" /><span class="False">     128:</span>     <span class="m">return</span> <span class="b">n</span><span class="f">+</span><span class="c">1</span><span class="f">;</span>
<a name="129" /><span class="False">     129:</span> <span class="f">}</span>
<a name="130" /><span class="False">     130:</span> 
<a name="131" /><span class="False">     131:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_next_and</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span>
<a name="132" /><span class="False">     132:</span>                         <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span>
<a name="133" /><span class="False">     133:</span>                         <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">andp</span><span class="f">)</span>
<a name="134" /><span class="False">     134:</span> <span class="f">{</span>
<a name="135" /><span class="False">     135:</span>     <span class="m">return</span> <span class="b">n</span><span class="f">+</span><span class="c">1</span><span class="f">;</span>
<a name="136" /><span class="False">     136:</span> <span class="f">}</span>
<a name="137" /><span class="False">     137:</span> 
<a name="138" /><span class="False">     138:</span> <span class="k">/* cpu must be a valid cpu, ie 0, so there&apos;s no other choice. */</span>
<a name="139" /><span class="False">     139:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_any_but</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span>
<a name="140" /><span class="False">     140:</span>                        <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span>
<a name="141" /><span class="False">     141:</span> <span class="f">{</span>
<a name="142" /><span class="False">     142:</span>     <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="143" /><span class="False">     143:</span> <span class="f">}</span>
<a name="144" /><span class="False">     144:</span> 
<a name="145" /><span class="False">     145:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfY3B1XzA_"><span class="b">for_each_cpu</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>            \
<a name="146" /><span class="False">     146:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="c">1</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">++</span><span class="f">,</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="b">mask</span><span class="f">)</span>
<a name="147" /><span class="False">     147:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X25vdF8w"><span class="b">for_each_cpu_not</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>        \
<a name="148" /><span class="False">     148:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="c">1</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">++</span><span class="f">,</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="b">mask</span><span class="f">)</span>
<a name="149" /><span class="False">     149:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X2FuZF8w"><span class="b">for_each_cpu_and</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">,</span> <span class="b">and</span><span class="f">)</span>    \
<a name="150" /><span class="False">     150:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="c">1</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">++</span><span class="f">,</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="b">mask</span><span class="f">,</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="b">and</span><span class="f">)</span>
<a name="151" /><span class="Maybe">     151:</span> <span class="f">#</span><span class="n">else</span>
<a name="152" /><span class="Maybe">     152:</span> <span class="k">/**</span>
<a name="153" /><span class="Maybe">     153:</span> <span class="k"> * cpumask_first - get the first cpu in a cpumask</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="k"> * @srcp: the cpumask pointer</span>
<a name="155" /><span class="Maybe">     155:</span> <span class="k"> *</span>
<a name="156" /><span class="Maybe">     156:</span> <span class="k"> * Returns &gt;= nr_cpu_ids if no cpus set.</span>
<a name="157" /><span class="Maybe">     157:</span> <span class="k"> */</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_first</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="159" /><span class="Maybe">     159:</span> <span class="f">{</span>
<a name="160" /><span class="Maybe">     160:</span>     <span class="m">return</span> <span class="b">find_first_bit</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="161" /><span class="Maybe">     161:</span> <span class="f">}</span>
<a name="162" /><span class="Maybe">     162:</span> 
<a name="163" /><span class="Maybe">     163:</span> <span class="k">/**</span>
<a name="164" /><span class="Maybe">     164:</span> <span class="k"> * cpumask_next - get the next cpu in a cpumask</span>
<a name="165" /><span class="Maybe">     165:</span> <span class="k"> * @n: the cpu prior to the place to search (ie. return will be &gt; @n)</span>
<a name="166" /><span class="Maybe">     166:</span> <span class="k"> * @srcp: the cpumask pointer</span>
<a name="167" /><span class="Maybe">     167:</span> <span class="k"> *</span>
<a name="168" /><span class="Maybe">     168:</span> <span class="k"> * Returns &gt;= nr_cpu_ids if no further cpus set.</span>
<a name="169" /><span class="Maybe">     169:</span> <span class="k"> */</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_next</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="171" /><span class="Maybe">     171:</span> <span class="f">{</span>
<a name="172" /><span class="Maybe">     172:</span>     <span class="k">/* -1 is a legal arg here. */</span>
<a name="173" /><span class="Maybe">     173:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">n</span> <span class="f">!=</span> <span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="174" /><span class="Maybe">     174:</span>         <span class="b">cpumask_check</span><span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">;</span>
<a name="175" /><span class="Maybe">     175:</span>     <span class="m">return</span> <span class="b">find_next_bit</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">,</span> <span class="b">n</span><span class="f">+</span><span class="c">1</span><span class="f">)</span><span class="f">;</span>
<a name="176" /><span class="Maybe">     176:</span> <span class="f">}</span>
<a name="177" /><span class="Maybe">     177:</span> 
<a name="178" /><span class="Maybe">     178:</span> <span class="k">/**</span>
<a name="179" /><span class="Maybe">     179:</span> <span class="k"> * cpumask_next_zero - get the next unset cpu in a cpumask</span>
<a name="180" /><span class="Maybe">     180:</span> <span class="k"> * @n: the cpu prior to the place to search (ie. return will be &gt; @n)</span>
<a name="181" /><span class="Maybe">     181:</span> <span class="k"> * @srcp: the cpumask pointer</span>
<a name="182" /><span class="Maybe">     182:</span> <span class="k"> *</span>
<a name="183" /><span class="Maybe">     183:</span> <span class="k"> * Returns &gt;= nr_cpu_ids if no further cpus unset.</span>
<a name="184" /><span class="Maybe">     184:</span> <span class="k"> */</span>
<a name="185" /><span class="Maybe">     185:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_next_zero</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="186" /><span class="Maybe">     186:</span> <span class="f">{</span>
<a name="187" /><span class="Maybe">     187:</span>     <span class="k">/* -1 is a legal arg here. */</span>
<a name="188" /><span class="Maybe">     188:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">n</span> <span class="f">!=</span> <span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="189" /><span class="Maybe">     189:</span>         <span class="b">cpumask_check</span><span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">;</span>
<a name="190" /><span class="Maybe">     190:</span>     <span class="m">return</span> <span class="b">find_next_zero_bit</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">,</span> <span class="b">n</span><span class="f">+</span><span class="c">1</span><span class="f">)</span><span class="f">;</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="f">}</span>
<a name="192" /><span class="Maybe">     192:</span> 
<a name="193" /><span class="Maybe">     193:</span> <span class="m">int</span> <span class="b">cpumask_next_and</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="194" /><span class="Maybe">     194:</span> <span class="m">int</span> <span class="b">cpumask_any_but</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span><span class="f">;</span>
<a name="195" /><span class="Maybe">     195:</span> 
<a name="196" /><span class="Maybe">     196:</span> <span class="k">/**</span>
<a name="197" /><span class="Maybe">     197:</span> <span class="k"> * for_each_cpu - iterate over every cpu in a mask</span>
<a name="198" /><span class="Maybe">     198:</span> <span class="k"> * @cpu: the (optionally unsigned) integer iterator</span>
<a name="199" /><span class="Maybe">     199:</span> <span class="k"> * @mask: the cpumask pointer</span>
<a name="200" /><span class="Maybe">     200:</span> <span class="k"> *</span>
<a name="201" /><span class="Maybe">     201:</span> <span class="k"> * After the loop, cpu is &gt;= nr_cpu_ids.</span>
<a name="202" /><span class="Maybe">     202:</span> <span class="k"> */</span>
<a name="203" /><span class="Maybe">     203:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfY3B1XzA_"><span class="b">for_each_cpu</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>                \
<a name="204" /><span class="Maybe">     204:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>                \
<a name="205" /><span class="Maybe">     205:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="b">cpumask_next</span><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span><span class="f">,</span>    \
<a name="206" /><span class="Maybe">     206:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="b">nr_cpu_ids</span><span class="f">;</span><span class="f">)</span>
<a name="207" /><span class="Maybe">     207:</span> 
<a name="208" /><span class="Maybe">     208:</span> <span class="k">/**</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="k"> * for_each_cpu_not - iterate over every cpu in a complemented mask</span>
<a name="210" /><span class="Maybe">     210:</span> <span class="k"> * @cpu: the (optionally unsigned) integer iterator</span>
<a name="211" /><span class="Maybe">     211:</span> <span class="k"> * @mask: the cpumask pointer</span>
<a name="212" /><span class="Maybe">     212:</span> <span class="k"> *</span>
<a name="213" /><span class="Maybe">     213:</span> <span class="k"> * After the loop, cpu is &gt;= nr_cpu_ids.</span>
<a name="214" /><span class="Maybe">     214:</span> <span class="k"> */</span>
<a name="215" /><span class="Maybe">     215:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X25vdF8w"><span class="b">for_each_cpu_not</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>                \
<a name="216" /><span class="Maybe">     216:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>                    \
<a name="217" /><span class="Maybe">     217:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="b">cpumask_next_zero</span><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span><span class="f">,</span>    \
<a name="218" /><span class="Maybe">     218:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="b">nr_cpu_ids</span><span class="f">;</span><span class="f">)</span>
<a name="219" /><span class="Maybe">     219:</span> 
<a name="220" /><span class="Maybe">     220:</span> <span class="k">/**</span>
<a name="221" /><span class="Maybe">     221:</span> <span class="k"> * for_each_cpu_and - iterate over every cpu in both masks</span>
<a name="222" /><span class="Maybe">     222:</span> <span class="k"> * @cpu: the (optionally unsigned) integer iterator</span>
<a name="223" /><span class="Maybe">     223:</span> <span class="k"> * @mask: the first cpumask pointer</span>
<a name="224" /><span class="Maybe">     224:</span> <span class="k"> * @and: the second cpumask pointer</span>
<a name="225" /><span class="Maybe">     225:</span> <span class="k"> *</span>
<a name="226" /><span class="Maybe">     226:</span> <span class="k"> * This saves a temporary CPU mask in many places.  It is equivalent to:</span>
<a name="227" /><span class="Maybe">     227:</span> <span class="k"> *    struct cpumask tmp;</span>
<a name="228" /><span class="Maybe">     228:</span> <span class="k"> *    cpumask_and(&amp;tmp, &amp;mask, &amp;and);</span>
<a name="229" /><span class="Maybe">     229:</span> <span class="k"> *    for_each_cpu(cpu, &amp;tmp)</span>
<a name="230" /><span class="Maybe">     230:</span> <span class="k"> *        ...</span>
<a name="231" /><span class="Maybe">     231:</span> <span class="k"> *</span>
<a name="232" /><span class="Maybe">     232:</span> <span class="k"> * After the loop, cpu is &gt;= nr_cpu_ids.</span>
<a name="233" /><span class="Maybe">     233:</span> <span class="k"> */</span>
<a name="234" /><span class="Maybe">     234:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X2FuZF8w"><span class="b">for_each_cpu_and</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">,</span> <span class="b">and</span><span class="f">)</span>                \
<a name="235" /><span class="Maybe">     235:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>                        \
<a name="236" /><span class="Maybe">     236:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="b">cpumask_next_and</span><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">and</span><span class="f">)</span><span class="f">)</span><span class="f">,</span>        \
<a name="237" /><span class="Maybe">     237:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="b">nr_cpu_ids</span><span class="f">;</span><span class="f">)</span>
<a name="238" /><span class="Maybe">     238:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* SMP */</span>
<a name="239" /><span class="Maybe">     239:</span> 
<a name="240" /><span class="Maybe">     240:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1BVX0JJVFNfTk9ORV8w"><span class="b">CPU_BITS_NONE</span></a>                        \
<a name="241" /><span class="Maybe">     241:</span> <span class="f">{</span>                                \
<a name="242" /><span class="Maybe">     242:</span>     <span class="f">[</span><span class="c">0</span> <span class="f">...</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span> <span class="c">0UL</span>            \
<a name="243" /><span class="Maybe">     243:</span> <span class="f">}</span>
<a name="244" /><span class="Maybe">     244:</span> 
<a name="245" /><span class="Maybe">     245:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1BVX0JJVFNfQ1BVMF8w"><span class="b">CPU_BITS_CPU0</span></a>                        \
<a name="246" /><span class="Maybe">     246:</span> <span class="f">{</span>                                \
<a name="247" /><span class="Maybe">     247:</span>     <span class="f">[</span><span class="c">0</span><span class="f">]</span> <span class="f">=</span>  <span class="c">1UL</span>                        \
<a name="248" /><span class="Maybe">     248:</span> <span class="f">}</span>
<a name="249" /><span class="Maybe">     249:</span> 
<a name="250" /><span class="Maybe">     250:</span> <span class="k">/**</span>
<a name="251" /><span class="Maybe">     251:</span> <span class="k"> * cpumask_set_cpu - set a cpu in a cpumask</span>
<a name="252" /><span class="Maybe">     252:</span> <span class="k"> * @cpu: cpu number (&lt; nr_cpu_ids)</span>
<a name="253" /><span class="Maybe">     253:</span> <span class="k"> * @dstp: the cpumask pointer</span>
<a name="254" /><span class="Maybe">     254:</span> <span class="k"> */</span>
<a name="255" /><span class="Maybe">     255:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_set_cpu</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="256" /><span class="Maybe">     256:</span> <span class="f">{</span>
<a name="257" /><span class="Maybe">     257:</span>     <span class="b">set_bit</span><span class="f">(</span><span class="b">cpumask_check</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="258" /><span class="Maybe">     258:</span> <span class="f">}</span>
<a name="259" /><span class="Maybe">     259:</span> 
<a name="260" /><span class="Maybe">     260:</span> <span class="k">/**</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="k"> * cpumask_clear_cpu - clear a cpu in a cpumask</span>
<a name="262" /><span class="Maybe">     262:</span> <span class="k"> * @cpu: cpu number (&lt; nr_cpu_ids)</span>
<a name="263" /><span class="Maybe">     263:</span> <span class="k"> * @dstp: the cpumask pointer</span>
<a name="264" /><span class="Maybe">     264:</span> <span class="k"> */</span>
<a name="265" /><span class="Maybe">     265:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_clear_cpu</span><span class="f">(</span><span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="266" /><span class="Maybe">     266:</span> <span class="f">{</span>
<a name="267" /><span class="Maybe">     267:</span>     <span class="b">clear_bit</span><span class="f">(</span><span class="b">cpumask_check</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="268" /><span class="Maybe">     268:</span> <span class="f">}</span>
<a name="269" /><span class="Maybe">     269:</span> 
<a name="270" /><span class="Maybe">     270:</span> <span class="k">/**</span>
<a name="271" /><span class="Maybe">     271:</span> <span class="k"> * cpumask_test_cpu - test for a cpu in a cpumask</span>
<a name="272" /><span class="Maybe">     272:</span> <span class="k"> * @cpu: cpu number (&lt; nr_cpu_ids)</span>
<a name="273" /><span class="Maybe">     273:</span> <span class="k"> * @cpumask: the cpumask pointer</span>
<a name="274" /><span class="Maybe">     274:</span> <span class="k"> *</span>
<a name="275" /><span class="Maybe">     275:</span> <span class="k"> * Returns 1 if @cpu is set in @cpumask, else returns 0</span>
<a name="276" /><span class="Maybe">     276:</span> <span class="k"> *</span>
<a name="277" /><span class="Maybe">     277:</span> <span class="k"> * No static inline type checking - see Subtlety (1) above.</span>
<a name="278" /><span class="Maybe">     278:</span> <span class="k"> */</span>
<a name="279" /><span class="Maybe">     279:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza190ZXN0X2NwdV8w"><span class="b">cpumask_test_cpu</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">cpumask</span><span class="f">)</span> \
<a name="280" /><span class="Maybe">     280:</span>     <a href="cpu.c_macros_ref.html#_dGVzdF9iaXRfMA__"><span class="b">test_bit</span></a><span class="f">(</span><span class="b">cpumask_check</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpumask</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="281" /><span class="Maybe">     281:</span> 
<a name="282" /><span class="Maybe">     282:</span> <span class="k">/**</span>
<a name="283" /><span class="Maybe">     283:</span> <span class="k"> * cpumask_test_and_set_cpu - atomically test and set a cpu in a cpumask</span>
<a name="284" /><span class="Maybe">     284:</span> <span class="k"> * @cpu: cpu number (&lt; nr_cpu_ids)</span>
<a name="285" /><span class="Maybe">     285:</span> <span class="k"> * @cpumask: the cpumask pointer</span>
<a name="286" /><span class="Maybe">     286:</span> <span class="k"> *</span>
<a name="287" /><span class="Maybe">     287:</span> <span class="k"> * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0</span>
<a name="288" /><span class="Maybe">     288:</span> <span class="k"> *</span>
<a name="289" /><span class="Maybe">     289:</span> <span class="k"> * test_and_set_bit wrapper for cpumasks.</span>
<a name="290" /><span class="Maybe">     290:</span> <span class="k"> */</span>
<a name="291" /><span class="Maybe">     291:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_test_and_set_cpu</span><span class="f">(</span><span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">cpumask</span><span class="f">)</span>
<a name="292" /><span class="Maybe">     292:</span> <span class="f">{</span>
<a name="293" /><span class="Maybe">     293:</span>     <span class="m">return</span> <span class="b">test_and_set_bit</span><span class="f">(</span><span class="b">cpumask_check</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">cpumask</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="294" /><span class="Maybe">     294:</span> <span class="f">}</span>
<a name="295" /><span class="Maybe">     295:</span> 
<a name="296" /><span class="Maybe">     296:</span> <span class="k">/**</span>
<a name="297" /><span class="Maybe">     297:</span> <span class="k"> * cpumask_test_and_clear_cpu - atomically test and clear a cpu in a cpumask</span>
<a name="298" /><span class="Maybe">     298:</span> <span class="k"> * @cpu: cpu number (&lt; nr_cpu_ids)</span>
<a name="299" /><span class="Maybe">     299:</span> <span class="k"> * @cpumask: the cpumask pointer</span>
<a name="300" /><span class="Maybe">     300:</span> <span class="k"> *</span>
<a name="301" /><span class="Maybe">     301:</span> <span class="k"> * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0</span>
<a name="302" /><span class="Maybe">     302:</span> <span class="k"> *</span>
<a name="303" /><span class="Maybe">     303:</span> <span class="k"> * test_and_clear_bit wrapper for cpumasks.</span>
<a name="304" /><span class="Maybe">     304:</span> <span class="k"> */</span>
<a name="305" /><span class="Maybe">     305:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_test_and_clear_cpu</span><span class="f">(</span><span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">cpumask</span><span class="f">)</span>
<a name="306" /><span class="Maybe">     306:</span> <span class="f">{</span>
<a name="307" /><span class="Maybe">     307:</span>     <span class="m">return</span> <span class="b">test_and_clear_bit</span><span class="f">(</span><span class="b">cpumask_check</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">cpumask</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="308" /><span class="Maybe">     308:</span> <span class="f">}</span>
<a name="309" /><span class="Maybe">     309:</span> 
<a name="310" /><span class="Maybe">     310:</span> <span class="k">/**</span>
<a name="311" /><span class="Maybe">     311:</span> <span class="k"> * cpumask_setall - set all cpus (&lt; nr_cpu_ids) in a cpumask</span>
<a name="312" /><span class="Maybe">     312:</span> <span class="k"> * @dstp: the cpumask pointer</span>
<a name="313" /><span class="Maybe">     313:</span> <span class="k"> */</span>
<a name="314" /><span class="Maybe">     314:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_setall</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="315" /><span class="Maybe">     315:</span> <span class="f">{</span>
<a name="316" /><span class="Maybe">     316:</span>     <span class="b">bitmap_fill</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="317" /><span class="Maybe">     317:</span> <span class="f">}</span>
<a name="318" /><span class="Maybe">     318:</span> 
<a name="319" /><span class="Maybe">     319:</span> <span class="k">/**</span>
<a name="320" /><span class="Maybe">     320:</span> <span class="k"> * cpumask_clear - clear all cpus (&lt; nr_cpu_ids) in a cpumask</span>
<a name="321" /><span class="Maybe">     321:</span> <span class="k"> * @dstp: the cpumask pointer</span>
<a name="322" /><span class="Maybe">     322:</span> <span class="k"> */</span>
<a name="323" /><span class="Maybe">     323:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_clear</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="324" /><span class="Maybe">     324:</span> <span class="f">{</span>
<a name="325" /><span class="Maybe">     325:</span>     <span class="b">bitmap_zero</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="326" /><span class="Maybe">     326:</span> <span class="f">}</span>
<a name="327" /><span class="Maybe">     327:</span> 
<a name="328" /><span class="Maybe">     328:</span> <span class="k">/**</span>
<a name="329" /><span class="Maybe">     329:</span> <span class="k"> * cpumask_and - *dstp = *src1p &amp; *src2p</span>
<a name="330" /><span class="Maybe">     330:</span> <span class="k"> * @dstp: the cpumask result</span>
<a name="331" /><span class="Maybe">     331:</span> <span class="k"> * @src1p: the first input</span>
<a name="332" /><span class="Maybe">     332:</span> <span class="k"> * @src2p: the second input</span>
<a name="333" /><span class="Maybe">     333:</span> <span class="k"> *</span>
<a name="334" /><span class="Maybe">     334:</span> <span class="k"> * If *@dstp is empty, returns 0, else returns 1</span>
<a name="335" /><span class="Maybe">     335:</span> <span class="k"> */</span>
<a name="336" /><span class="Maybe">     336:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_and</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="337" /><span class="Maybe">     337:</span>                    <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="338" /><span class="Maybe">     338:</span>                    <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src2p</span><span class="f">)</span>
<a name="339" /><span class="Maybe">     339:</span> <span class="f">{</span>
<a name="340" /><span class="Maybe">     340:</span>     <span class="m">return</span> <span class="b">bitmap_and</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span>
<a name="341" /><span class="Maybe">     341:</span>                        <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="342" /><span class="Maybe">     342:</span> <span class="f">}</span>
<a name="343" /><span class="Maybe">     343:</span> 
<a name="344" /><span class="Maybe">     344:</span> <span class="k">/**</span>
<a name="345" /><span class="Maybe">     345:</span> <span class="k"> * cpumask_or - *dstp = *src1p | *src2p</span>
<a name="346" /><span class="Maybe">     346:</span> <span class="k"> * @dstp: the cpumask result</span>
<a name="347" /><span class="Maybe">     347:</span> <span class="k"> * @src1p: the first input</span>
<a name="348" /><span class="Maybe">     348:</span> <span class="k"> * @src2p: the second input</span>
<a name="349" /><span class="Maybe">     349:</span> <span class="k"> */</span>
<a name="350" /><span class="Maybe">     350:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_or</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="351" /><span class="Maybe">     351:</span>                   <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src2p</span><span class="f">)</span>
<a name="352" /><span class="Maybe">     352:</span> <span class="f">{</span>
<a name="353" /><span class="Maybe">     353:</span>     <span class="b">bitmap_or</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span>
<a name="354" /><span class="Maybe">     354:</span>                       <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="355" /><span class="Maybe">     355:</span> <span class="f">}</span>
<a name="356" /><span class="Maybe">     356:</span> 
<a name="357" /><span class="Maybe">     357:</span> <span class="k">/**</span>
<a name="358" /><span class="Maybe">     358:</span> <span class="k"> * cpumask_xor - *dstp = *src1p ^ *src2p</span>
<a name="359" /><span class="Maybe">     359:</span> <span class="k"> * @dstp: the cpumask result</span>
<a name="360" /><span class="Maybe">     360:</span> <span class="k"> * @src1p: the first input</span>
<a name="361" /><span class="Maybe">     361:</span> <span class="k"> * @src2p: the second input</span>
<a name="362" /><span class="Maybe">     362:</span> <span class="k"> */</span>
<a name="363" /><span class="Maybe">     363:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_xor</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="364" /><span class="Maybe">     364:</span>                    <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="365" /><span class="Maybe">     365:</span>                    <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src2p</span><span class="f">)</span>
<a name="366" /><span class="Maybe">     366:</span> <span class="f">{</span>
<a name="367" /><span class="Maybe">     367:</span>     <span class="b">bitmap_xor</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span>
<a name="368" /><span class="Maybe">     368:</span>                        <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="369" /><span class="Maybe">     369:</span> <span class="f">}</span>
<a name="370" /><span class="Maybe">     370:</span> 
<a name="371" /><span class="Maybe">     371:</span> <span class="k">/**</span>
<a name="372" /><span class="Maybe">     372:</span> <span class="k"> * cpumask_andnot - *dstp = *src1p &amp; ~*src2p</span>
<a name="373" /><span class="Maybe">     373:</span> <span class="k"> * @dstp: the cpumask result</span>
<a name="374" /><span class="Maybe">     374:</span> <span class="k"> * @src1p: the first input</span>
<a name="375" /><span class="Maybe">     375:</span> <span class="k"> * @src2p: the second input</span>
<a name="376" /><span class="Maybe">     376:</span> <span class="k"> *</span>
<a name="377" /><span class="Maybe">     377:</span> <span class="k"> * If *@dstp is empty, returns 0, else returns 1</span>
<a name="378" /><span class="Maybe">     378:</span> <span class="k"> */</span>
<a name="379" /><span class="Maybe">     379:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_andnot</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="380" /><span class="Maybe">     380:</span>                   <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="381" /><span class="Maybe">     381:</span>                   <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src2p</span><span class="f">)</span>
<a name="382" /><span class="Maybe">     382:</span> <span class="f">{</span>
<a name="383" /><span class="Maybe">     383:</span>     <span class="m">return</span> <span class="b">bitmap_andnot</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span>
<a name="384" /><span class="Maybe">     384:</span>                       <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="385" /><span class="Maybe">     385:</span> <span class="f">}</span>
<a name="386" /><span class="Maybe">     386:</span> 
<a name="387" /><span class="Maybe">     387:</span> <span class="k">/**</span>
<a name="388" /><span class="Maybe">     388:</span> <span class="k"> * cpumask_complement - *dstp = ~*srcp</span>
<a name="389" /><span class="Maybe">     389:</span> <span class="k"> * @dstp: the cpumask result</span>
<a name="390" /><span class="Maybe">     390:</span> <span class="k"> * @srcp: the input to invert</span>
<a name="391" /><span class="Maybe">     391:</span> <span class="k"> */</span>
<a name="392" /><span class="Maybe">     392:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_complement</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="393" /><span class="Maybe">     393:</span>                       <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="394" /><span class="Maybe">     394:</span> <span class="f">{</span>
<a name="395" /><span class="Maybe">     395:</span>     <span class="b">bitmap_complement</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span>
<a name="396" /><span class="Maybe">     396:</span>                           <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="397" /><span class="Maybe">     397:</span> <span class="f">}</span>
<a name="398" /><span class="Maybe">     398:</span> 
<a name="399" /><span class="Maybe">     399:</span> <span class="k">/**</span>
<a name="400" /><span class="Maybe">     400:</span> <span class="k"> * cpumask_equal - *src1p == *src2p</span>
<a name="401" /><span class="Maybe">     401:</span> <span class="k"> * @src1p: the first input</span>
<a name="402" /><span class="Maybe">     402:</span> <span class="k"> * @src2p: the second input</span>
<a name="403" /><span class="Maybe">     403:</span> <span class="k"> */</span>
<a name="404" /><span class="Maybe">     404:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">cpumask_equal</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="405" /><span class="Maybe">     405:</span>                 <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src2p</span><span class="f">)</span>
<a name="406" /><span class="Maybe">     406:</span> <span class="f">{</span>
<a name="407" /><span class="Maybe">     407:</span>     <span class="m">return</span> <span class="b">bitmap_equal</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">,</span>
<a name="408" /><span class="Maybe">     408:</span>                          <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="409" /><span class="Maybe">     409:</span> <span class="f">}</span>
<a name="410" /><span class="Maybe">     410:</span> 
<a name="411" /><span class="Maybe">     411:</span> <span class="k">/**</span>
<a name="412" /><span class="Maybe">     412:</span> <span class="k"> * cpumask_intersects - (*src1p &amp; *src2p) != 0</span>
<a name="413" /><span class="Maybe">     413:</span> <span class="k"> * @src1p: the first input</span>
<a name="414" /><span class="Maybe">     414:</span> <span class="k"> * @src2p: the second input</span>
<a name="415" /><span class="Maybe">     415:</span> <span class="k"> */</span>
<a name="416" /><span class="Maybe">     416:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">cpumask_intersects</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="417" /><span class="Maybe">     417:</span>                      <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src2p</span><span class="f">)</span>
<a name="418" /><span class="Maybe">     418:</span> <span class="f">{</span>
<a name="419" /><span class="Maybe">     419:</span>     <span class="m">return</span> <span class="b">bitmap_intersects</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">,</span>
<a name="420" /><span class="Maybe">     420:</span>                               <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="421" /><span class="Maybe">     421:</span> <span class="f">}</span>
<a name="422" /><span class="Maybe">     422:</span> 
<a name="423" /><span class="Maybe">     423:</span> <span class="k">/**</span>
<a name="424" /><span class="Maybe">     424:</span> <span class="k"> * cpumask_subset - (*src1p &amp; ~*src2p) == 0</span>
<a name="425" /><span class="Maybe">     425:</span> <span class="k"> * @src1p: the first input</span>
<a name="426" /><span class="Maybe">     426:</span> <span class="k"> * @src2p: the second input</span>
<a name="427" /><span class="Maybe">     427:</span> <span class="k"> *</span>
<a name="428" /><span class="Maybe">     428:</span> <span class="k"> * Returns 1 if *@src1p is a subset of *@src2p, else returns 0</span>
<a name="429" /><span class="Maybe">     429:</span> <span class="k"> */</span>
<a name="430" /><span class="Maybe">     430:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_subset</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="431" /><span class="Maybe">     431:</span>                  <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src2p</span><span class="f">)</span>
<a name="432" /><span class="Maybe">     432:</span> <span class="f">{</span>
<a name="433" /><span class="Maybe">     433:</span>     <span class="m">return</span> <span class="b">bitmap_subset</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">,</span>
<a name="434" /><span class="Maybe">     434:</span>                           <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="435" /><span class="Maybe">     435:</span> <span class="f">}</span>
<a name="436" /><span class="Maybe">     436:</span> 
<a name="437" /><span class="Maybe">     437:</span> <span class="k">/**</span>
<a name="438" /><span class="Maybe">     438:</span> <span class="k"> * cpumask_empty - *srcp == 0</span>
<a name="439" /><span class="Maybe">     439:</span> <span class="k"> * @srcp: the cpumask to that all cpus &lt; nr_cpu_ids are clear.</span>
<a name="440" /><span class="Maybe">     440:</span> <span class="k"> */</span>
<a name="441" /><span class="Maybe">     441:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">cpumask_empty</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="442" /><span class="Maybe">     442:</span> <span class="f">{</span>
<a name="443" /><span class="Maybe">     443:</span>     <span class="m">return</span> <span class="b">bitmap_empty</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="444" /><span class="Maybe">     444:</span> <span class="f">}</span>
<a name="445" /><span class="Maybe">     445:</span> 
<a name="446" /><span class="Maybe">     446:</span> <span class="k">/**</span>
<a name="447" /><span class="Maybe">     447:</span> <span class="k"> * cpumask_full - *srcp == 0xFFFFFFFF...</span>
<a name="448" /><span class="Maybe">     448:</span> <span class="k"> * @srcp: the cpumask to that all cpus &lt; nr_cpu_ids are set.</span>
<a name="449" /><span class="Maybe">     449:</span> <span class="k"> */</span>
<a name="450" /><span class="Maybe">     450:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">cpumask_full</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="451" /><span class="Maybe">     451:</span> <span class="f">{</span>
<a name="452" /><span class="Maybe">     452:</span>     <span class="m">return</span> <span class="b">bitmap_full</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="453" /><span class="Maybe">     453:</span> <span class="f">}</span>
<a name="454" /><span class="Maybe">     454:</span> 
<a name="455" /><span class="Maybe">     455:</span> <span class="k">/**</span>
<a name="456" /><span class="Maybe">     456:</span> <span class="k"> * cpumask_weight - Count of bits in *srcp</span>
<a name="457" /><span class="Maybe">     457:</span> <span class="k"> * @srcp: the cpumask to count bits (&lt; nr_cpu_ids) in.</span>
<a name="458" /><span class="Maybe">     458:</span> <span class="k"> */</span>
<a name="459" /><span class="Maybe">     459:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpumask_weight</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="460" /><span class="Maybe">     460:</span> <span class="f">{</span>
<a name="461" /><span class="Maybe">     461:</span>     <span class="m">return</span> <span class="b">bitmap_weight</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="462" /><span class="Maybe">     462:</span> <span class="f">}</span>
<a name="463" /><span class="Maybe">     463:</span> 
<a name="464" /><span class="Maybe">     464:</span> <span class="k">/**</span>
<a name="465" /><span class="Maybe">     465:</span> <span class="k"> * cpumask_shift_right - *dstp = *srcp &gt;&gt; n</span>
<a name="466" /><span class="Maybe">     466:</span> <span class="k"> * @dstp: the cpumask result</span>
<a name="467" /><span class="Maybe">     467:</span> <span class="k"> * @srcp: the input to shift</span>
<a name="468" /><span class="Maybe">     468:</span> <span class="k"> * @n: the number of bits to shift by</span>
<a name="469" /><span class="Maybe">     469:</span> <span class="k"> */</span>
<a name="470" /><span class="Maybe">     470:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_shift_right</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="471" /><span class="Maybe">     471:</span>                        <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">)</span>
<a name="472" /><span class="Maybe">     472:</span> <span class="f">{</span>
<a name="473" /><span class="Maybe">     473:</span>     <span class="b">bitmap_shift_right</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <span class="b">n</span><span class="f">,</span>
<a name="474" /><span class="Maybe">     474:</span>                            <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="475" /><span class="Maybe">     475:</span> <span class="f">}</span>
<a name="476" /><span class="Maybe">     476:</span> 
<a name="477" /><span class="Maybe">     477:</span> <span class="k">/**</span>
<a name="478" /><span class="Maybe">     478:</span> <span class="k"> * cpumask_shift_left - *dstp = *srcp &lt;&lt; n</span>
<a name="479" /><span class="Maybe">     479:</span> <span class="k"> * @dstp: the cpumask result</span>
<a name="480" /><span class="Maybe">     480:</span> <span class="k"> * @srcp: the input to shift</span>
<a name="481" /><span class="Maybe">     481:</span> <span class="k"> * @n: the number of bits to shift by</span>
<a name="482" /><span class="Maybe">     482:</span> <span class="k"> */</span>
<a name="483" /><span class="Maybe">     483:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_shift_left</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="484" /><span class="Maybe">     484:</span>                       <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">)</span>
<a name="485" /><span class="Maybe">     485:</span> <span class="f">{</span>
<a name="486" /><span class="Maybe">     486:</span>     <span class="b">bitmap_shift_left</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <span class="b">n</span><span class="f">,</span>
<a name="487" /><span class="Maybe">     487:</span>                           <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="488" /><span class="Maybe">     488:</span> <span class="f">}</span>
<a name="489" /><span class="Maybe">     489:</span> 
<a name="490" /><span class="Maybe">     490:</span> <span class="k">/**</span>
<a name="491" /><span class="Maybe">     491:</span> <span class="k"> * cpumask_copy - *dstp = *srcp</span>
<a name="492" /><span class="Maybe">     492:</span> <span class="k"> * @dstp: the result</span>
<a name="493" /><span class="Maybe">     493:</span> <span class="k"> * @srcp: the input cpumask</span>
<a name="494" /><span class="Maybe">     494:</span> <span class="k"> */</span>
<a name="495" /><span class="Maybe">     495:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">cpumask_copy</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="496" /><span class="Maybe">     496:</span>                 <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="497" /><span class="Maybe">     497:</span> <span class="f">{</span>
<a name="498" /><span class="Maybe">     498:</span>     <span class="b">bitmap_copy</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="499" /><span class="Maybe">     499:</span> <span class="f">}</span>
<a name="500" /><span class="Maybe">     500:</span> 
<a name="501" /><span class="Maybe">     501:</span> <span class="k">/**</span>
<a name="502" /><span class="Maybe">     502:</span> <span class="k"> * cpumask_any - pick a &quot;random&quot; cpu from *srcp</span>
<a name="503" /><span class="Maybe">     503:</span> <span class="k"> * @srcp: the input cpumask</span>
<a name="504" /><span class="Maybe">     504:</span> <span class="k"> *</span>
<a name="505" /><span class="Maybe">     505:</span> <span class="k"> * Returns &gt;= nr_cpu_ids if no cpus set.</span>
<a name="506" /><span class="Maybe">     506:</span> <span class="k"> */</span>
<a name="507" /><span class="Maybe">     507:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1bWFza19hbnlfMA__"><span class="b">cpumask_any</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span> <span class="b">cpumask_first</span><span class="f">(</span><span class="b">srcp</span><span class="f">)</span>
<a name="508" /><span class="Maybe">     508:</span> 
<a name="509" /><span class="Maybe">     509:</span> <span class="k">/**</span>
<a name="510" /><span class="Maybe">     510:</span> <span class="k"> * cpumask_first_and - return the first cpu from *srcp1 &amp; *srcp2</span>
<a name="511" /><span class="Maybe">     511:</span> <span class="k"> * @src1p: the first input</span>
<a name="512" /><span class="Maybe">     512:</span> <span class="k"> * @src2p: the second input</span>
<a name="513" /><span class="Maybe">     513:</span> <span class="k"> *</span>
<a name="514" /><span class="Maybe">     514:</span> <span class="k"> * Returns &gt;= nr_cpu_ids if no cpus set in both.  See also cpumask_next_and().</span>
<a name="515" /><span class="Maybe">     515:</span> <span class="k"> */</span>
<a name="516" /><span class="Maybe">     516:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1bWFza19maXJzdF9hbmRfMA__"><span class="b">cpumask_first_and</span></a><span class="f">(</span><span class="b">src1p</span><span class="f">,</span> <span class="b">src2p</span><span class="f">)</span> <span class="b">cpumask_next_and</span><span class="f">(</span><span class="f">-</span><span class="c">1</span><span class="f">,</span> <span class="f">(</span><span class="b">src1p</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">src2p</span><span class="f">)</span><span class="f">)</span>
<a name="517" /><span class="Maybe">     517:</span> 
<a name="518" /><span class="Maybe">     518:</span> <span class="k">/**</span>
<a name="519" /><span class="Maybe">     519:</span> <span class="k"> * cpumask_any_and - pick a &quot;random&quot; cpu from *mask1 &amp; *mask2</span>
<a name="520" /><span class="Maybe">     520:</span> <span class="k"> * @mask1: the first input cpumask</span>
<a name="521" /><span class="Maybe">     521:</span> <span class="k"> * @mask2: the second input cpumask</span>
<a name="522" /><span class="Maybe">     522:</span> <span class="k"> *</span>
<a name="523" /><span class="Maybe">     523:</span> <span class="k"> * Returns &gt;= nr_cpu_ids if no cpus set.</span>
<a name="524" /><span class="Maybe">     524:</span> <span class="k"> */</span>
<a name="525" /><span class="Maybe">     525:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1bWFza19hbnlfYW5kXzA_"><span class="b">cpumask_any_and</span></a><span class="f">(</span><span class="b">mask1</span><span class="f">,</span> <span class="b">mask2</span><span class="f">)</span> <a href="cpu.c_macros_noref.html#_Y3B1bWFza19maXJzdF9hbmRfMA__"><span class="b">cpumask_first_and</span></a><span class="f">(</span><span class="f">(</span><span class="b">mask1</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">mask2</span><span class="f">)</span><span class="f">)</span>
<a name="526" /><span class="Maybe">     526:</span> 
<a name="527" /><span class="Maybe">     527:</span> <span class="k">/**</span>
<a name="528" /><span class="Maybe">     528:</span> <span class="k"> * cpumask_of - the cpumask containing just a given cpu</span>
<a name="529" /><span class="Maybe">     529:</span> <span class="k"> * @cpu: the cpu (&lt;= nr_cpu_ids)</span>
<a name="530" /><span class="Maybe">     530:</span> <span class="k"> */</span>
<a name="531" /><span class="Maybe">     531:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19vZl8w"><span class="b">cpumask_of</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">(</span><span class="b">get_cpu_mask</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">)</span>
<a name="532" /><span class="Maybe">     532:</span> 
<a name="533" /><span class="Maybe">     533:</span> <span class="k">/**</span>
<a name="534" /><span class="Maybe">     534:</span> <span class="k"> * cpumask_scnprintf - print a cpumask into a string as comma-separated hex</span>
<a name="535" /><span class="Maybe">     535:</span> <span class="k"> * @buf: the buffer to sprintf into</span>
<a name="536" /><span class="Maybe">     536:</span> <span class="k"> * @len: the length of the buffer</span>
<a name="537" /><span class="Maybe">     537:</span> <span class="k"> * @srcp: the cpumask to print</span>
<a name="538" /><span class="Maybe">     538:</span> <span class="k"> *</span>
<a name="539" /><span class="Maybe">     539:</span> <span class="k"> * If len is zero, returns zero.  Otherwise returns the length of the</span>
<a name="540" /><span class="Maybe">     540:</span> <span class="k"> * (nul-terminated) @buf string.</span>
<a name="541" /><span class="Maybe">     541:</span> <span class="k"> */</span>
<a name="542" /><span class="Maybe">     542:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_scnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="543" /><span class="Maybe">     543:</span>                     <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="544" /><span class="Maybe">     544:</span> <span class="f">{</span>
<a name="545" /><span class="Maybe">     545:</span>     <span class="m">return</span> <span class="b">bitmap_scnprintf</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="546" /><span class="Maybe">     546:</span> <span class="f">}</span>
<a name="547" /><span class="Maybe">     547:</span> 
<a name="548" /><span class="Maybe">     548:</span> <span class="k">/**</span>
<a name="549" /><span class="Maybe">     549:</span> <span class="k"> * cpumask_parse_user - extract a cpumask from a user string</span>
<a name="550" /><span class="Maybe">     550:</span> <span class="k"> * @buf: the buffer to extract from</span>
<a name="551" /><span class="Maybe">     551:</span> <span class="k"> * @len: the length of the buffer</span>
<a name="552" /><span class="Maybe">     552:</span> <span class="k"> * @dstp: the cpumask to set.</span>
<a name="553" /><span class="Maybe">     553:</span> <span class="k"> *</span>
<a name="554" /><span class="Maybe">     554:</span> <span class="k"> * Returns -errno, or 0 for success.</span>
<a name="555" /><span class="Maybe">     555:</span> <span class="k"> */</span>
<a name="556" /><span class="Maybe">     556:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_parse_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="557" /><span class="Maybe">     557:</span>                      <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="558" /><span class="Maybe">     558:</span> <span class="f">{</span>
<a name="559" /><span class="Maybe">     559:</span>     <span class="m">return</span> <span class="b">bitmap_parse_user</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="560" /><span class="Maybe">     560:</span> <span class="f">}</span>
<a name="561" /><span class="Maybe">     561:</span> 
<a name="562" /><span class="Maybe">     562:</span> <span class="k">/**</span>
<a name="563" /><span class="Maybe">     563:</span> <span class="k"> * cpumask_parselist_user - extract a cpumask from a user string</span>
<a name="564" /><span class="Maybe">     564:</span> <span class="k"> * @buf: the buffer to extract from</span>
<a name="565" /><span class="Maybe">     565:</span> <span class="k"> * @len: the length of the buffer</span>
<a name="566" /><span class="Maybe">     566:</span> <span class="k"> * @dstp: the cpumask to set.</span>
<a name="567" /><span class="Maybe">     567:</span> <span class="k"> *</span>
<a name="568" /><span class="Maybe">     568:</span> <span class="k"> * Returns -errno, or 0 for success.</span>
<a name="569" /><span class="Maybe">     569:</span> <span class="k"> */</span>
<a name="570" /><span class="Maybe">     570:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_parselist_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="571" /><span class="Maybe">     571:</span>                      <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="572" /><span class="Maybe">     572:</span> <span class="f">{</span>
<a name="573" /><span class="Maybe">     573:</span>     <span class="m">return</span> <span class="b">bitmap_parselist_user</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span>
<a name="574" /><span class="Maybe">     574:</span>                             <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="575" /><span class="Maybe">     575:</span> <span class="f">}</span>
<a name="576" /><span class="Maybe">     576:</span> 
<a name="577" /><span class="Maybe">     577:</span> <span class="k">/**</span>
<a name="578" /><span class="Maybe">     578:</span> <span class="k"> * cpulist_scnprintf - print a cpumask into a string as comma-separated list</span>
<a name="579" /><span class="Maybe">     579:</span> <span class="k"> * @buf: the buffer to sprintf into</span>
<a name="580" /><span class="Maybe">     580:</span> <span class="k"> * @len: the length of the buffer</span>
<a name="581" /><span class="Maybe">     581:</span> <span class="k"> * @srcp: the cpumask to print</span>
<a name="582" /><span class="Maybe">     582:</span> <span class="k"> *</span>
<a name="583" /><span class="Maybe">     583:</span> <span class="k"> * If len is zero, returns zero.  Otherwise returns the length of the</span>
<a name="584" /><span class="Maybe">     584:</span> <span class="k"> * (nul-terminated) @buf string.</span>
<a name="585" /><span class="Maybe">     585:</span> <span class="k"> */</span>
<a name="586" /><span class="Maybe">     586:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpulist_scnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="587" /><span class="Maybe">     587:</span>                     <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="588" /><span class="Maybe">     588:</span> <span class="f">{</span>
<a name="589" /><span class="Maybe">     589:</span>     <span class="m">return</span> <span class="b">bitmap_scnlistprintf</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">srcp</span><span class="f">)</span><span class="f">,</span>
<a name="590" /><span class="Maybe">     590:</span>                     <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="591" /><span class="Maybe">     591:</span> <span class="f">}</span>
<a name="592" /><span class="Maybe">     592:</span> 
<a name="593" /><span class="Maybe">     593:</span> <span class="k">/**</span>
<a name="594" /><span class="Maybe">     594:</span> <span class="k"> * cpumask_parse - extract a cpumask from from a string</span>
<a name="595" /><span class="Maybe">     595:</span> <span class="k"> * @buf: the buffer to extract from</span>
<a name="596" /><span class="Maybe">     596:</span> <span class="k"> * @dstp: the cpumask to set.</span>
<a name="597" /><span class="Maybe">     597:</span> <span class="k"> *</span>
<a name="598" /><span class="Maybe">     598:</span> <span class="k"> * Returns -errno, or 0 for success.</span>
<a name="599" /><span class="Maybe">     599:</span> <span class="k"> */</span>
<a name="600" /><span class="Maybe">     600:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpumask_parse</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="601" /><span class="Maybe">     601:</span> <span class="f">{</span>
<a name="602" /><span class="Maybe">     602:</span>     <span class="m">char</span> <span class="f">*</span><span class="b">nl</span> <span class="f">=</span> <span class="b">strchr</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="d">&apos;\n&apos;</span><span class="f">)</span><span class="f">;</span>
<a name="603" /><span class="Maybe">     603:</span>     <span class="m">int</span> <span class="b">len</span> <span class="f">=</span> <span class="b">nl</span> <span class="f">?</span> <span class="b">nl</span> <span class="f">-</span> <span class="b">buf</span> <span class="f">:</span> <span class="b">strlen</span><span class="f">(</span><span class="b">buf</span><span class="f">)</span><span class="f">;</span>
<a name="604" /><span class="Maybe">     604:</span> 
<a name="605" /><span class="Maybe">     605:</span>     <span class="m">return</span> <span class="b">bitmap_parse</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="606" /><span class="Maybe">     606:</span> <span class="f">}</span>
<a name="607" /><span class="Maybe">     607:</span> 
<a name="608" /><span class="Maybe">     608:</span> <span class="k">/**</span>
<a name="609" /><span class="Maybe">     609:</span> <span class="k"> * cpulist_parse - extract a cpumask from a user string of ranges</span>
<a name="610" /><span class="Maybe">     610:</span> <span class="k"> * @buf: the buffer to extract from</span>
<a name="611" /><span class="Maybe">     611:</span> <span class="k"> * @dstp: the cpumask to set.</span>
<a name="612" /><span class="Maybe">     612:</span> <span class="k"> *</span>
<a name="613" /><span class="Maybe">     613:</span> <span class="k"> * Returns -errno, or 0 for success.</span>
<a name="614" /><span class="Maybe">     614:</span> <span class="k"> */</span>
<a name="615" /><span class="Maybe">     615:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">cpulist_parse</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="616" /><span class="Maybe">     616:</span> <span class="f">{</span>
<a name="617" /><span class="Maybe">     617:</span>     <span class="m">return</span> <span class="b">bitmap_parselist</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_Y3B1bWFza19iaXRzXzA_"><span class="b">cpumask_bits</span></a><span class="f">(</span><span class="b">dstp</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_bnJfY3B1bWFza19iaXRzXzA_"><span class="b">nr_cpumask_bits</span></a><span class="f">)</span><span class="f">;</span>
<a name="618" /><span class="Maybe">     618:</span> <span class="f">}</span>
<a name="619" /><span class="Maybe">     619:</span> 
<a name="620" /><span class="Maybe">     620:</span> <span class="k">/**</span>
<a name="621" /><span class="Maybe">     621:</span> <span class="k"> * cpumask_size - size to allocate for a &apos;struct cpumask&apos; in bytes</span>
<a name="622" /><span class="Maybe">     622:</span> <span class="k"> *</span>
<a name="623" /><span class="Maybe">     623:</span> <span class="k"> * This will eventually be a runtime variable, depending on nr_cpu_ids.</span>
<a name="624" /><span class="Maybe">     624:</span> <span class="k"> */</span>
<a name="625" /><span class="Maybe">     625:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">size_t</span> <span class="b">cpumask_size</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="626" /><span class="Maybe">     626:</span> <span class="f">{</span>
<a name="627" /><span class="Maybe">     627:</span>     <span class="k">/* FIXME: Once all cpumask assignments are eliminated, this</span>
<a name="628" /><span class="Maybe">     628:</span> <span class="k">     * can be nr_cpumask_bits */</span>
<a name="629" /><span class="Maybe">     629:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span> <span class="f">*</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="630" /><span class="Maybe">     630:</span> <span class="f">}</span>
<a name="631" /><span class="Maybe">     631:</span> 
<a name="632" /><span class="Maybe">     632:</span> <span class="k">/*</span>
<a name="633" /><span class="Maybe">     633:</span> <span class="k"> * cpumask_var_t: struct cpumask for stack usage.</span>
<a name="634" /><span class="Maybe">     634:</span> <span class="k"> *</span>
<a name="635" /><span class="Maybe">     635:</span> <span class="k"> * Oh, the wicked games we play!  In order to make kernel coding a</span>
<a name="636" /><span class="Maybe">     636:</span> <span class="k"> * little more difficult, we typedef cpumask_var_t to an array or a</span>
<a name="637" /><span class="Maybe">     637:</span> <span class="k"> * pointer: doing &amp;mask on an array is a noop, so it still works.</span>
<a name="638" /><span class="Maybe">     638:</span> <span class="k"> *</span>
<a name="639" /><span class="Maybe">     639:</span> <span class="k"> * ie.</span>
<a name="640" /><span class="Maybe">     640:</span> <span class="k"> *    cpumask_var_t tmpmask;</span>
<a name="641" /><span class="Maybe">     641:</span> <span class="k"> *    if (!alloc_cpumask_var(&amp;tmpmask, GFP_KERNEL))</span>
<a name="642" /><span class="Maybe">     642:</span> <span class="k"> *        return -ENOMEM;</span>
<a name="643" /><span class="Maybe">     643:</span> <span class="k"> *</span>
<a name="644" /><span class="Maybe">     644:</span> <span class="k"> *      ... use &apos;tmpmask&apos; like a normal struct cpumask * ...</span>
<a name="645" /><span class="Maybe">     645:</span> <span class="k"> *</span>
<a name="646" /><span class="Maybe">     646:</span> <span class="k"> *    free_cpumask_var(tmpmask);</span>
<a name="647" /><span class="Maybe">     647:</span> <span class="k"> *</span>
<a name="648" /><span class="Maybe">     648:</span> <span class="k"> *</span>
<a name="649" /><span class="Maybe">     649:</span> <span class="k"> * However, one notable exception is there. alloc_cpumask_var() allocates</span>
<a name="650" /><span class="Maybe">     650:</span> <span class="k"> * only nr_cpumask_bits bits (in the other hand, real cpumask_t always has</span>
<a name="651" /><span class="Maybe">     651:</span> <span class="k"> * NR_CPUS bits). Therefore you don&apos;t have to dereference cpumask_var_t.</span>
<a name="652" /><span class="Maybe">     652:</span> <span class="k"> *</span>
<a name="653" /><span class="Maybe">     653:</span> <span class="k"> *    cpumask_var_t tmpmask;</span>
<a name="654" /><span class="Maybe">     654:</span> <span class="k"> *    if (!alloc_cpumask_var(&amp;tmpmask, GFP_KERNEL))</span>
<a name="655" /><span class="Maybe">     655:</span> <span class="k"> *        return -ENOMEM;</span>
<a name="656" /><span class="Maybe">     656:</span> <span class="k"> *</span>
<a name="657" /><span class="Maybe">     657:</span> <span class="k"> *    var = *tmpmask;</span>
<a name="658" /><span class="Maybe">     658:</span> <span class="k"> *</span>
<a name="659" /><span class="Maybe">     659:</span> <span class="k"> * This code makes NR_CPUS length memcopy and brings to a memory corruption.</span>
<a name="660" /><span class="Maybe">     660:</span> <span class="k"> * cpumask_copy() provide safe copy functionality.</span>
<a name="661" /><span class="Maybe">     661:</span> <span class="k"> */</span>
<a name="662" /><span class="False">     662:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_CPUMASK_OFFSTACK</span>
<a name="663" /><span class="False">     663:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">cpumask_var_t</span><span class="f">;</span>
<a name="664" /><span class="False">     664:</span> 
<a name="665" /><span class="False">     665:</span> <span class="m">bool</span> <span class="b">alloc_cpumask_var_node</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">,</span> <span class="m">int</span> <span class="b">node</span><span class="f">)</span><span class="f">;</span>
<a name="666" /><span class="False">     666:</span> <span class="m">bool</span> <span class="b">alloc_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="667" /><span class="False">     667:</span> <span class="m">bool</span> <span class="b">zalloc_cpumask_var_node</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">,</span> <span class="m">int</span> <span class="b">node</span><span class="f">)</span><span class="f">;</span>
<a name="668" /><span class="False">     668:</span> <span class="m">bool</span> <span class="b">zalloc_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="669" /><span class="False">     669:</span> <span class="m">void</span> <span class="b">alloc_bootmem_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">)</span><span class="f">;</span>
<a name="670" /><span class="False">     670:</span> <span class="m">void</span> <span class="b">free_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="b">mask</span><span class="f">)</span><span class="f">;</span>
<a name="671" /><span class="False">     671:</span> <span class="m">void</span> <span class="b">free_bootmem_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="b">mask</span><span class="f">)</span><span class="f">;</span>
<a name="672" /><span class="False">     672:</span> 
<a name="673" /><span class="Maybe">     673:</span> <span class="f">#</span><span class="n">else</span>
<a name="674" /><span class="Maybe">     674:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="b">cpumask_var_t</span><span class="f">[</span><span class="c">1</span><span class="f">]</span><span class="f">;</span>
<a name="675" /><span class="Maybe">     675:</span> 
<a name="676" /><span class="Maybe">     676:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">alloc_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">)</span>
<a name="677" /><span class="Maybe">     677:</span> <span class="f">{</span>
<a name="678" /><span class="Maybe">     678:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="679" /><span class="Maybe">     679:</span> <span class="f">}</span>
<a name="680" /><span class="Maybe">     680:</span> 
<a name="681" /><span class="Maybe">     681:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">alloc_cpumask_var_node</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">,</span>
<a name="682" /><span class="Maybe">     682:</span>                       <span class="m">int</span> <span class="b">node</span><span class="f">)</span>
<a name="683" /><span class="Maybe">     683:</span> <span class="f">{</span>
<a name="684" /><span class="Maybe">     684:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="685" /><span class="Maybe">     685:</span> <span class="f">}</span>
<a name="686" /><span class="Maybe">     686:</span> 
<a name="687" /><span class="Maybe">     687:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">zalloc_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">)</span>
<a name="688" /><span class="Maybe">     688:</span> <span class="f">{</span>
<a name="689" /><span class="Maybe">     689:</span>     <span class="b">cpumask_clear</span><span class="f">(</span><span class="f">*</span><span class="b">mask</span><span class="f">)</span><span class="f">;</span>
<a name="690" /><span class="Maybe">     690:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="691" /><span class="Maybe">     691:</span> <span class="f">}</span>
<a name="692" /><span class="Maybe">     692:</span> 
<a name="693" /><span class="Maybe">     693:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">zalloc_cpumask_var_node</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">,</span>
<a name="694" /><span class="Maybe">     694:</span>                       <span class="m">int</span> <span class="b">node</span><span class="f">)</span>
<a name="695" /><span class="Maybe">     695:</span> <span class="f">{</span>
<a name="696" /><span class="Maybe">     696:</span>     <span class="b">cpumask_clear</span><span class="f">(</span><span class="f">*</span><span class="b">mask</span><span class="f">)</span><span class="f">;</span>
<a name="697" /><span class="Maybe">     697:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="698" /><span class="Maybe">     698:</span> <span class="f">}</span>
<a name="699" /><span class="Maybe">     699:</span> 
<a name="700" /><span class="Maybe">     700:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">alloc_bootmem_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">)</span>
<a name="701" /><span class="Maybe">     701:</span> <span class="f">{</span>
<a name="702" /><span class="Maybe">     702:</span> <span class="f">}</span>
<a name="703" /><span class="Maybe">     703:</span> 
<a name="704" /><span class="Maybe">     704:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">free_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="b">mask</span><span class="f">)</span>
<a name="705" /><span class="Maybe">     705:</span> <span class="f">{</span>
<a name="706" /><span class="Maybe">     706:</span> <span class="f">}</span>
<a name="707" /><span class="Maybe">     707:</span> 
<a name="708" /><span class="Maybe">     708:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">free_bootmem_cpumask_var</span><span class="f">(</span><span class="b">cpumask_var_t</span> <span class="b">mask</span><span class="f">)</span>
<a name="709" /><span class="Maybe">     709:</span> <span class="f">{</span>
<a name="710" /><span class="Maybe">     710:</span> <span class="f">}</span>
<a name="711" /><span class="Maybe">     711:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_CPUMASK_OFFSTACK */</span>
<a name="712" /><span class="Maybe">     712:</span> 
<a name="713" /><span class="Maybe">     713:</span> <span class="k">/* It&apos;s common to want to use cpu_all_mask in struct member initializers,</span>
<a name="714" /><span class="Maybe">     714:</span> <span class="k"> * so it has to refer to an address rather than a pointer. */</span>
<a name="715" /><span class="Maybe">     715:</span> <span class="m">extern</span> <span class="m">const</span> <a href="cpu.c_macros_ref.html#_REVDTEFSRV9CSVRNQVBfMA__"><span class="b">DECLARE_BITMAP</span></a><span class="f">(</span><span class="b">cpu_all_bits</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">;</span>
<a name="716" /><span class="Maybe">     716:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X2FsbF9tYXNrXzA_"><span class="b">cpu_all_mask</span></a> <a href="cpu.c_macros_ref.html#_dG9fY3B1bWFza18w"><span class="b">to_cpumask</span></a><span class="f">(</span><span class="b">cpu_all_bits</span><span class="f">)</span>
<a name="717" /><span class="Maybe">     717:</span> 
<a name="718" /><span class="Maybe">     718:</span> <span class="k">/* First bits of cpu_bit_bitmap are in fact unset. */</span>
<a name="719" /><span class="Maybe">     719:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X25vbmVfbWFza18w"><span class="b">cpu_none_mask</span></a> <a href="cpu.c_macros_ref.html#_dG9fY3B1bWFza18w"><span class="b">to_cpumask</span></a><span class="f">(</span><span class="b">cpu_bit_bitmap</span><span class="f">[</span><span class="c">0</span><span class="f">]</span><span class="f">)</span>
<a name="720" /><span class="Maybe">     720:</span> 
<a name="721" /><span class="Maybe">     721:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfcG9zc2libGVfY3B1XzA_"><span class="b">for_each_possible_cpu</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfY3B1XzA_"><span class="b">for_each_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="b">cpu_possible_mask</span><span class="f">)</span>
<a name="722" /><span class="Maybe">     722:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfb25saW5lX2NwdV8w"><span class="b">for_each_online_cpu</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>   <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfY3B1XzA_"><span class="b">for_each_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="b">cpu_online_mask</span><span class="f">)</span>
<a name="723" /><span class="Maybe">     723:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfcHJlc2VudF9jcHVfMA__"><span class="b">for_each_present_cpu</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>  <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfY3B1XzA_"><span class="b">for_each_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="b">cpu_present_mask</span><span class="f">)</span>
<a name="724" /><span class="Maybe">     724:</span> 
<a name="725" /><span class="Maybe">     725:</span> <span class="k">/* Wrappers for arch boot code to manipulate normally-constant masks */</span>
<a name="726" /><span class="Maybe">     726:</span> <span class="m">void</span> <span class="b">set_cpu_possible</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">bool</span> <span class="b">possible</span><span class="f">)</span><span class="f">;</span>
<a name="727" /><span class="Maybe">     727:</span> <span class="m">void</span> <span class="b">set_cpu_present</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">bool</span> <span class="b">present</span><span class="f">)</span><span class="f">;</span>
<a name="728" /><span class="Maybe">     728:</span> <span class="m">void</span> <span class="b">set_cpu_online</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">bool</span> <span class="b">online</span><span class="f">)</span><span class="f">;</span>
<a name="729" /><span class="Maybe">     729:</span> <span class="m">void</span> <span class="b">set_cpu_active</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">bool</span> <span class="b">active</span><span class="f">)</span><span class="f">;</span>
<a name="730" /><span class="Maybe">     730:</span> <span class="m">void</span> <span class="b">init_cpu_present</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src</span><span class="f">)</span><span class="f">;</span>
<a name="731" /><span class="Maybe">     731:</span> <span class="m">void</span> <span class="b">init_cpu_possible</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src</span><span class="f">)</span><span class="f">;</span>
<a name="732" /><span class="Maybe">     732:</span> <span class="m">void</span> <span class="b">init_cpu_online</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">src</span><span class="f">)</span><span class="f">;</span>
<a name="733" /><span class="Maybe">     733:</span> 
<a name="734" /><span class="Maybe">     734:</span> <span class="k">/**</span>
<a name="735" /><span class="Maybe">     735:</span> <span class="k"> * to_cpumask - convert an NR_CPUS bitmap to a struct cpumask *</span>
<a name="736" /><span class="Maybe">     736:</span> <span class="k"> * @bitmap: the bitmap</span>
<a name="737" /><span class="Maybe">     737:</span> <span class="k"> *</span>
<a name="738" /><span class="Maybe">     738:</span> <span class="k"> * There are a few places where cpumask_var_t isn&apos;t appropriate and</span>
<a name="739" /><span class="Maybe">     739:</span> <span class="k"> * static cpumasks must be used (eg. very early boot), yet we don&apos;t</span>
<a name="740" /><span class="Maybe">     740:</span> <span class="k"> * expose the definition of &apos;struct cpumask&apos;.</span>
<a name="741" /><span class="Maybe">     741:</span> <span class="k"> *</span>
<a name="742" /><span class="Maybe">     742:</span> <span class="k"> * This does the conversion, and can be used as a constant initializer.</span>
<a name="743" /><span class="Maybe">     743:</span> <span class="k"> */</span>
<a name="744" /><span class="Maybe">     744:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_dG9fY3B1bWFza18w"><span class="b">to_cpumask</span></a><span class="f">(</span><span class="b">bitmap</span><span class="f">)</span>                        \
<a name="745" /><span class="Maybe">     745:</span>     <span class="f">(</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="c">1</span> <span class="f">?</span> <span class="f">(</span><span class="b">bitmap</span><span class="f">)</span>                \
<a name="746" /><span class="Maybe">     746:</span>                 <span class="f">:</span> <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="f">)</span><span class="m">sizeof</span><span class="f">(</span><span class="b">__check_is_bitmap</span><span class="f">(</span><span class="b">bitmap</span><span class="f">)</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="747" /><span class="Maybe">     747:</span> 
<a name="748" /><span class="Maybe">     748:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__check_is_bitmap</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">bitmap</span><span class="f">)</span>
<a name="749" /><span class="Maybe">     749:</span> <span class="f">{</span>
<a name="750" /><span class="Maybe">     750:</span>     <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="751" /><span class="Maybe">     751:</span> <span class="f">}</span>
<a name="752" /><span class="Maybe">     752:</span> 
<a name="753" /><span class="Maybe">     753:</span> <span class="k">/*</span>
<a name="754" /><span class="Maybe">     754:</span> <span class="k"> * Special-case data structure for &quot;single bit set only&quot; constant CPU masks.</span>
<a name="755" /><span class="Maybe">     755:</span> <span class="k"> *</span>
<a name="756" /><span class="Maybe">     756:</span> <span class="k"> * We pre-generate all the 64 (or 32) possible bit positions, with enough</span>
<a name="757" /><span class="Maybe">     757:</span> <span class="k"> * padding to the left and the right, and return the constant pointer</span>
<a name="758" /><span class="Maybe">     758:</span> <span class="k"> * appropriately offset.</span>
<a name="759" /><span class="Maybe">     759:</span> <span class="k"> */</span>
<a name="760" /><span class="Maybe">     760:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span>
<a name="761" /><span class="Maybe">     761:</span>     <span class="b">cpu_bit_bitmap</span><span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a><span class="f">+</span><span class="c">1</span><span class="f">]</span><span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">]</span><span class="f">;</span>
<a name="762" /><span class="Maybe">     762:</span> 
<a name="763" /><span class="Maybe">     763:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">get_cpu_mask</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span>
<a name="764" /><span class="Maybe">     764:</span> <span class="f">{</span>
<a name="765" /><span class="Maybe">     765:</span>     <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">p</span> <span class="f">=</span> <span class="b">cpu_bit_bitmap</span><span class="f">[</span><span class="c">1</span> <span class="f">+</span> <span class="b">cpu</span> <span class="f">%</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a><span class="f">]</span><span class="f">;</span>
<a name="766" /><span class="Maybe">     766:</span>     <span class="b">p</span> <span class="f">-=</span> <span class="b">cpu</span> <span class="f">/</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a><span class="f">;</span>
<a name="767" /><span class="Maybe">     767:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_dG9fY3B1bWFza18w"><span class="b">to_cpumask</span></a><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">;</span>
<a name="768" /><span class="Maybe">     768:</span> <span class="f">}</span>
<a name="769" /><span class="Maybe">     769:</span> 
<a name="770" /><span class="Maybe">     770:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X2lzX29mZmxpbmVfMA__"><span class="b">cpu_is_offline</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="f">!</span><a href="cpu.c_macros_ref.html#_Y3B1X29ubGluZV8w"><span class="b">cpu_online</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">)</span>
<a name="771" /><span class="Maybe">     771:</span> 
<a name="772" /><span class="Maybe">     772:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a> <span class="f">&lt;=</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a>
<a name="773" /><span class="Maybe">     773:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Q1BVX0JJVFNfQUxMXzA_"><span class="b">CPU_BITS_ALL</span></a>                        \
<a name="774" /><span class="Maybe">     774:</span> <span class="f">{</span>                                \
<a name="775" /><span class="Maybe">     775:</span>     <span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_Q1BVX01BU0tfTEFTVF9XT1JEXzA_"><span class="b">CPU_MASK_LAST_WORD</span></a>    \
<a name="776" /><span class="Maybe">     776:</span> <span class="f">}</span>
<a name="777" /><span class="Maybe">     777:</span> 
<a name="778" /><span class="False">     778:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* NR_CPUS &gt; BITS_PER_LONG */</span>
<a name="779" /><span class="False">     779:</span> 
<a name="780" /><span class="False">     780:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Q1BVX0JJVFNfQUxMXzA_"><span class="b">CPU_BITS_ALL</span></a>                        \
<a name="781" /><span class="False">     781:</span> <span class="f">{</span>                                \
<a name="782" /><span class="False">     782:</span>     <span class="f">[</span><span class="c">0</span> <span class="f">...</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">2</span><span class="f">]</span> <span class="f">=</span> <span class="f">~</span><span class="c">0UL</span><span class="f">,</span>        \
<a name="783" /><span class="False">     783:</span>     <span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_Q1BVX01BU0tfTEFTVF9XT1JEXzA_"><span class="b">CPU_MASK_LAST_WORD</span></a>        \
<a name="784" /><span class="False">     784:</span> <span class="f">}</span>
<a name="785" /><span class="Maybe">     785:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* NR_CPUS &gt; BITS_PER_LONG */</span>
<a name="786" /><span class="Maybe">     786:</span> 
<a name="787" /><span class="Maybe">     787:</span> <span class="k">/*</span>
<a name="788" /><span class="Maybe">     788:</span> <span class="k"> *</span>
<a name="789" /><span class="Maybe">     789:</span> <span class="k"> * From here down, all obsolete.  Use cpumask_ variants!</span>
<a name="790" /><span class="Maybe">     790:</span> <span class="k"> *</span>
<a name="791" /><span class="Maybe">     791:</span> <span class="k"> */</span>
<a name="792" /><span class="Maybe">     792:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS</span>
<a name="793" /><span class="Maybe">     793:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1bWFza19vZl9jcHVfMA__"><span class="b">cpumask_of_cpu</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">(</span><span class="f">*</span><span class="b">get_cpu_mask</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">)</span>
<a name="794" /><span class="Maybe">     794:</span> 
<a name="795" /><span class="Maybe">     795:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Q1BVX01BU0tfTEFTVF9XT1JEXzA_"><span class="b">CPU_MASK_LAST_WORD</span></a> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="796" /><span class="Maybe">     796:</span> 
<a name="797" /><span class="Maybe">     797:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a> <span class="f">&lt;=</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a>
<a name="798" /><span class="Maybe">     798:</span> 
<a name="799" /><span class="Maybe">     799:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1BVX01BU0tfQUxMXzA_"><span class="b">CPU_MASK_ALL</span></a>                            \
<a name="800" /><span class="Maybe">     800:</span> <span class="f">(</span><span class="b">cpumask_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">{</span>                                \
<a name="801" /><span class="Maybe">     801:</span>     <span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_Q1BVX01BU0tfTEFTVF9XT1JEXzA_"><span class="b">CPU_MASK_LAST_WORD</span></a>            \
<a name="802" /><span class="Maybe">     802:</span> <span class="f">}</span> <span class="f">}</span>
<a name="803" /><span class="Maybe">     803:</span> 
<a name="804" /><span class="False">     804:</span> <span class="f">#</span><span class="n">else</span>
<a name="805" /><span class="False">     805:</span> 
<a name="806" /><span class="False">     806:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1BVX01BU0tfQUxMXzA_"><span class="b">CPU_MASK_ALL</span></a>                            \
<a name="807" /><span class="False">     807:</span> <span class="f">(</span><span class="b">cpumask_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">{</span>                                \
<a name="808" /><span class="False">     808:</span>     <span class="f">[</span><span class="c">0</span> <span class="f">...</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">2</span><span class="f">]</span> <span class="f">=</span> <span class="f">~</span><span class="c">0UL</span><span class="f">,</span>            \
<a name="809" /><span class="False">     809:</span>     <span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_Q1BVX01BU0tfTEFTVF9XT1JEXzA_"><span class="b">CPU_MASK_LAST_WORD</span></a>            \
<a name="810" /><span class="False">     810:</span> <span class="f">}</span> <span class="f">}</span>
<a name="811" /><span class="False">     811:</span> 
<a name="812" /><span class="Maybe">     812:</span> <span class="f">#</span><span class="n">endif</span>
<a name="813" /><span class="Maybe">     813:</span> 
<a name="814" /><span class="Maybe">     814:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1BVX01BU0tfTk9ORV8w"><span class="b">CPU_MASK_NONE</span></a>                            \
<a name="815" /><span class="Maybe">     815:</span> <span class="f">(</span><span class="b">cpumask_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">{</span>                                \
<a name="816" /><span class="Maybe">     816:</span>     <span class="f">[</span><span class="c">0</span> <span class="f">...</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span>  <span class="c">0UL</span>                \
<a name="817" /><span class="Maybe">     817:</span> <span class="f">}</span> <span class="f">}</span>
<a name="818" /><span class="Maybe">     818:</span> 
<a name="819" /><span class="Maybe">     819:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1BVX01BU0tfQ1BVMF8w"><span class="b">CPU_MASK_CPU0</span></a>                            \
<a name="820" /><span class="Maybe">     820:</span> <span class="f">(</span><span class="b">cpumask_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">{</span>                                \
<a name="821" /><span class="Maybe">     821:</span>     <span class="f">[</span><span class="c">0</span><span class="f">]</span> <span class="f">=</span>  <span class="c">1UL</span>                            \
<a name="822" /><span class="Maybe">     822:</span> <span class="f">}</span> <span class="f">}</span>
<a name="823" /><span class="Maybe">     823:</span> 
<a name="824" /><span class="False">     824:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a> <span class="f">==</span> <span class="c">1</span>
<a name="825" /><span class="False">     825:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zmlyc3RfY3B1XzA_"><span class="b">first_cpu</span></a><span class="f">(</span><span class="b">src</span><span class="f">)</span>        <span class="f">(</span><span class="f">{</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">;</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="826" /><span class="False">     826:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bmV4dF9jcHVfMA__"><span class="b">next_cpu</span></a><span class="f">(</span><span class="b">n</span><span class="f">,</span> <span class="b">src</span><span class="f">)</span>    <span class="f">(</span><span class="f">{</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">;</span> <span class="c">1</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="827" /><span class="False">     827:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YW55X29ubGluZV9jcHVfMA__"><span class="b">any_online_cpu</span></a><span class="f">(</span><span class="b">mask</span><span class="f">)</span>    <span class="c">0</span>
<a name="828" /><span class="False">     828:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X21hc2tfMA__"><span class="b">for_each_cpu_mask</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>    \
<a name="829" /><span class="False">     829:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="c">1</span><span class="f">;</span> <span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">++</span><span class="f">,</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="b">mask</span><span class="f">)</span>
<a name="830" /><span class="Maybe">     830:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* NR_CPUS &gt; 1 */</span>
<a name="831" /><span class="Maybe">     831:</span> <span class="m">int</span> <span class="b">__first_cpu</span><span class="f">(</span><span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span><span class="f">;</span>
<a name="832" /><span class="Maybe">     832:</span> <span class="m">int</span> <span class="b">__next_cpu</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span><span class="f">;</span>
<a name="833" /><span class="Maybe">     833:</span> 
<a name="834" /><span class="Maybe">     834:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zmlyc3RfY3B1XzA_"><span class="b">first_cpu</span></a><span class="f">(</span><span class="b">src</span><span class="f">)</span>        <span class="b">__first_cpu</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">)</span>
<a name="835" /><span class="Maybe">     835:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bmV4dF9jcHVfMA__"><span class="b">next_cpu</span></a><span class="f">(</span><span class="b">n</span><span class="f">,</span> <span class="b">src</span><span class="f">)</span>    <span class="b">__next_cpu</span><span class="f">(</span><span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">)</span>
<a name="836" /><span class="Maybe">     836:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YW55X29ubGluZV9jcHVfMA__"><span class="b">any_online_cpu</span></a><span class="f">(</span><span class="b">mask</span><span class="f">)</span> <a href="cpu.c_macros_noref.html#_Y3B1bWFza19hbnlfYW5kXzA_"><span class="b">cpumask_any_and</span></a><span class="f">(</span><span class="f">&amp;</span><span class="b">mask</span><span class="f">,</span> <span class="b">cpu_online_mask</span><span class="f">)</span>
<a name="837" /><span class="Maybe">     837:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X21hc2tfMA__"><span class="b">for_each_cpu_mask</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>            \
<a name="838" /><span class="Maybe">     838:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>                \
<a name="839" /><span class="Maybe">     839:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_bmV4dF9jcHVfMA__"><span class="b">next_cpu</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span><span class="f">,</span>    \
<a name="840" /><span class="Maybe">     840:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">;</span> <span class="f">)</span>
<a name="841" /><span class="Maybe">     841:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* SMP */</span>
<a name="842" /><span class="Maybe">     842:</span> 
<a name="843" /><span class="Maybe">     843:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a> <span class="f">&lt;=</span> <span class="c">64</span>
<a name="844" /><span class="Maybe">     844:</span> 
<a name="845" /><span class="Maybe">     845:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X21hc2tfbnJfMA__"><span class="b">for_each_cpu_mask_nr</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X21hc2tfMA__"><span class="b">for_each_cpu_mask</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>
<a name="846" /><span class="Maybe">     846:</span> 
<a name="847" /><span class="False">     847:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* NR_CPUS &gt; 64 */</span>
<a name="848" /><span class="False">     848:</span> 
<a name="849" /><span class="False">     849:</span> <span class="m">int</span> <span class="b">__next_cpu_nr</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span><span class="f">;</span>
<a name="850" /><span class="False">     850:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfY3B1X21hc2tfbnJfMA__"><span class="b">for_each_cpu_mask_nr</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>            \
<a name="851" /><span class="False">     851:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>                \
<a name="852" /><span class="False">     852:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">=</span> <span class="b">__next_cpu_nr</span><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span><span class="f">,</span>    \
<a name="853" /><span class="False">     853:</span>         <span class="f">(</span><span class="b">cpu</span><span class="f">)</span> <span class="f">&lt;</span> <span class="b">nr_cpu_ids</span><span class="f">;</span> <span class="f">)</span>
<a name="854" /><span class="False">     854:</span> 
<a name="855" /><span class="Maybe">     855:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* NR_CPUS &gt; 64 */</span>
<a name="856" /><span class="Maybe">     856:</span> 
<a name="857" /><span class="Maybe">     857:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19hZGRyXzA_"><span class="b">cpus_addr</span></a><span class="f">(</span><span class="b">src</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">.</span><span class="b">bits</span><span class="f">)</span>
<a name="858" /><span class="Maybe">     858:</span> 
<a name="859" /><span class="Maybe">     859:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X3NldF8w"><span class="b">cpu_set</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">dst</span><span class="f">)</span> <span class="b">__cpu_set</span><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">)</span>
<a name="860" /><span class="Maybe">     860:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__cpu_set</span><span class="f">(</span><span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">volatile</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="861" /><span class="Maybe">     861:</span> <span class="f">{</span>
<a name="862" /><span class="Maybe">     862:</span>     <span class="b">set_bit</span><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="863" /><span class="Maybe">     863:</span> <span class="f">}</span>
<a name="864" /><span class="Maybe">     864:</span> 
<a name="865" /><span class="Maybe">     865:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X2NsZWFyXzA_"><span class="b">cpu_clear</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">dst</span><span class="f">)</span> <span class="b">__cpu_clear</span><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">)</span>
<a name="866" /><span class="Maybe">     866:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__cpu_clear</span><span class="f">(</span><span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="m">volatile</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="867" /><span class="Maybe">     867:</span> <span class="f">{</span>
<a name="868" /><span class="Maybe">     868:</span>     <span class="b">clear_bit</span><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="869" /><span class="Maybe">     869:</span> <span class="f">}</span>
<a name="870" /><span class="Maybe">     870:</span> 
<a name="871" /><span class="Maybe">     871:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19zZXRhbGxfMA__"><span class="b">cpus_setall</span></a><span class="f">(</span><span class="b">dst</span><span class="f">)</span> <span class="b">__cpus_setall</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="872" /><span class="Maybe">     872:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__cpus_setall</span><span class="f">(</span><span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="873" /><span class="Maybe">     873:</span> <span class="f">{</span>
<a name="874" /><span class="Maybe">     874:</span>     <span class="b">bitmap_fill</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="875" /><span class="Maybe">     875:</span> <span class="f">}</span>
<a name="876" /><span class="Maybe">     876:</span> 
<a name="877" /><span class="Maybe">     877:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19jbGVhcl8w"><span class="b">cpus_clear</span></a><span class="f">(</span><span class="b">dst</span><span class="f">)</span> <span class="b">__cpus_clear</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="878" /><span class="Maybe">     878:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__cpus_clear</span><span class="f">(</span><span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="879" /><span class="Maybe">     879:</span> <span class="f">{</span>
<a name="880" /><span class="Maybe">     880:</span>     <span class="b">bitmap_zero</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="881" /><span class="Maybe">     881:</span> <span class="f">}</span>
<a name="882" /><span class="Maybe">     882:</span> 
<a name="883" /><span class="Maybe">     883:</span> <span class="k">/* No static inline type checking - see Subtlety (1) above. */</span>
<a name="884" /><span class="Maybe">     884:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X2lzc2V0XzA_"><span class="b">cpu_isset</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">cpumask</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_dGVzdF9iaXRfMA__"><span class="b">test_bit</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">cpumask</span><span class="f">)</span><span class="f">.</span><span class="b">bits</span><span class="f">)</span>
<a name="885" /><span class="Maybe">     885:</span> 
<a name="886" /><span class="Maybe">     886:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1X3Rlc3RfYW5kX3NldF8w"><span class="b">cpu_test_and_set</span></a><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">cpumask</span><span class="f">)</span> <span class="b">__cpu_test_and_set</span><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">cpumask</span><span class="f">)</span><span class="f">)</span>
<a name="887" /><span class="Maybe">     887:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpu_test_and_set</span><span class="f">(</span><span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span>
<a name="888" /><span class="Maybe">     888:</span> <span class="f">{</span>
<a name="889" /><span class="Maybe">     889:</span>     <span class="m">return</span> <span class="b">test_and_set_bit</span><span class="f">(</span><span class="b">cpu</span><span class="f">,</span> <span class="b">addr</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="890" /><span class="Maybe">     890:</span> <span class="f">}</span>
<a name="891" /><span class="Maybe">     891:</span> 
<a name="892" /><span class="Maybe">     892:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19hbmRfMA__"><span class="b">cpus_and</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> <span class="b">__cpus_and</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="893" /><span class="Maybe">     893:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpus_and</span><span class="f">(</span><span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="894" /><span class="Maybe">     894:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="895" /><span class="Maybe">     895:</span> <span class="f">{</span>
<a name="896" /><span class="Maybe">     896:</span>     <span class="m">return</span> <span class="b">bitmap_and</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="897" /><span class="Maybe">     897:</span> <span class="f">}</span>
<a name="898" /><span class="Maybe">     898:</span> 
<a name="899" /><span class="Maybe">     899:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19vcl8w"><span class="b">cpus_or</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> <span class="b">__cpus_or</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="900" /><span class="Maybe">     900:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__cpus_or</span><span class="f">(</span><span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="901" /><span class="Maybe">     901:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="902" /><span class="Maybe">     902:</span> <span class="f">{</span>
<a name="903" /><span class="Maybe">     903:</span>     <span class="b">bitmap_or</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="904" /><span class="Maybe">     904:</span> <span class="f">}</span>
<a name="905" /><span class="Maybe">     905:</span> 
<a name="906" /><span class="Maybe">     906:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c194b3JfMA__"><span class="b">cpus_xor</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> <span class="b">__cpus_xor</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="907" /><span class="Maybe">     907:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__cpus_xor</span><span class="f">(</span><span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="908" /><span class="Maybe">     908:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="909" /><span class="Maybe">     909:</span> <span class="f">{</span>
<a name="910" /><span class="Maybe">     910:</span>     <span class="b">bitmap_xor</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="911" /><span class="Maybe">     911:</span> <span class="f">}</span>
<a name="912" /><span class="Maybe">     912:</span> 
<a name="913" /><span class="Maybe">     913:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19hbmRub3RfMA__"><span class="b">cpus_andnot</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="914" /><span class="Maybe">     914:</span>                 <span class="b">__cpus_andnot</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="915" /><span class="Maybe">     915:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpus_andnot</span><span class="f">(</span><span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="916" /><span class="Maybe">     916:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="917" /><span class="Maybe">     917:</span> <span class="f">{</span>
<a name="918" /><span class="Maybe">     918:</span>     <span class="m">return</span> <span class="b">bitmap_andnot</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="919" /><span class="Maybe">     919:</span> <span class="f">}</span>
<a name="920" /><span class="Maybe">     920:</span> 
<a name="921" /><span class="Maybe">     921:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19lcXVhbF8w"><span class="b">cpus_equal</span></a><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> <span class="b">__cpus_equal</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="922" /><span class="Maybe">     922:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpus_equal</span><span class="f">(</span><span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="923" /><span class="Maybe">     923:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="924" /><span class="Maybe">     924:</span> <span class="f">{</span>
<a name="925" /><span class="Maybe">     925:</span>     <span class="m">return</span> <span class="b">bitmap_equal</span><span class="f">(</span><span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="926" /><span class="Maybe">     926:</span> <span class="f">}</span>
<a name="927" /><span class="Maybe">     927:</span> 
<a name="928" /><span class="Maybe">     928:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19pbnRlcnNlY3RzXzA_"><span class="b">cpus_intersects</span></a><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> <span class="b">__cpus_intersects</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="929" /><span class="Maybe">     929:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpus_intersects</span><span class="f">(</span><span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="930" /><span class="Maybe">     930:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="931" /><span class="Maybe">     931:</span> <span class="f">{</span>
<a name="932" /><span class="Maybe">     932:</span>     <span class="m">return</span> <span class="b">bitmap_intersects</span><span class="f">(</span><span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="933" /><span class="Maybe">     933:</span> <span class="f">}</span>
<a name="934" /><span class="Maybe">     934:</span> 
<a name="935" /><span class="Maybe">     935:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19zdWJzZXRfMA__"><span class="b">cpus_subset</span></a><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> <span class="b">__cpus_subset</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="936" /><span class="Maybe">     936:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpus_subset</span><span class="f">(</span><span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="937" /><span class="Maybe">     937:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="938" /><span class="Maybe">     938:</span> <span class="f">{</span>
<a name="939" /><span class="Maybe">     939:</span>     <span class="m">return</span> <span class="b">bitmap_subset</span><span class="f">(</span><span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="940" /><span class="Maybe">     940:</span> <span class="f">}</span>
<a name="941" /><span class="Maybe">     941:</span> 
<a name="942" /><span class="Maybe">     942:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19lbXB0eV8w"><span class="b">cpus_empty</span></a><span class="f">(</span><span class="b">src</span><span class="f">)</span> <span class="b">__cpus_empty</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="943" /><span class="Maybe">     943:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpus_empty</span><span class="f">(</span><span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="944" /><span class="Maybe">     944:</span> <span class="f">{</span>
<a name="945" /><span class="Maybe">     945:</span>     <span class="m">return</span> <span class="b">bitmap_empty</span><span class="f">(</span><span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="946" /><span class="Maybe">     946:</span> <span class="f">}</span>
<a name="947" /><span class="Maybe">     947:</span> 
<a name="948" /><span class="Maybe">     948:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c193ZWlnaHRfMA__"><span class="b">cpus_weight</span></a><span class="f">(</span><span class="b">cpumask</span><span class="f">)</span> <span class="b">__cpus_weight</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">cpumask</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="949" /><span class="Maybe">     949:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__cpus_weight</span><span class="f">(</span><span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="950" /><span class="Maybe">     950:</span> <span class="f">{</span>
<a name="951" /><span class="Maybe">     951:</span>     <span class="m">return</span> <span class="b">bitmap_weight</span><span class="f">(</span><span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="952" /><span class="Maybe">     952:</span> <span class="f">}</span>
<a name="953" /><span class="Maybe">     953:</span> 
<a name="954" /><span class="Maybe">     954:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y3B1c19zaGlmdF9sZWZ0XzA_"><span class="b">cpus_shift_left</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">n</span><span class="f">)</span> \
<a name="955" /><span class="Maybe">     955:</span>             <span class="b">__cpus_shift_left</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlJfQ1BVU18w"><span class="b">NR_CPUS</span></a><span class="f">)</span>
<a name="956" /><span class="Maybe">     956:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__cpus_shift_left</span><span class="f">(</span><span class="b">cpumask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="957" /><span class="Maybe">     957:</span>                     <span class="m">const</span> <span class="b">cpumask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="958" /><span class="Maybe">     958:</span> <span class="f">{</span>
<a name="959" /><span class="Maybe">     959:</span>     <span class="b">bitmap_shift_left</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">n</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="960" /><span class="Maybe">     960:</span> <span class="f">}</span>
<a name="961" /><span class="Maybe">     961:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS */</span>
<a name="962" /><span class="Maybe">     962:</span> 
<a name="963" /><span class="True">     963:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __LINUX_CPUMASK_H */</span>
<a name="964" /><span class="True">     964:</span> </pre>
  </body>
</html>
